[INFO] cloning repository https://github.com/EBonura/bonnie-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/EBonura/bonnie-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEBonura%2Fbonnie-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEBonura%2Fbonnie-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2f1607beed2464f21ff63eb98e9512589ff6f00c
[INFO] fixing EBonura/bonnie-rs against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEBonura%2Fbonnie-rs" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-6-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/EBonura/bonnie-rs
[INFO] finished tweaking git repo https://github.com/EBonura/bonnie-rs
[INFO] tweaked toml for git repo https://github.com/EBonura/bonnie-rs written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/EBonura/bonnie-rs on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/EBonura/bonnie-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded webbrowser v1.0.6
[INFO] [stderr]   Downloaded rustysynth v1.3.6
[INFO] [stderr]   Downloaded midir v0.10.3
[INFO] [stderr]   Downloaded coremidi-sys v3.2.0
[INFO] [stderr]   Downloaded memory-stats v1.2.0
[INFO] [stderr]   Downloaded coremidi v0.8.0
[INFO] [stderr]   Downloaded moxcms v0.7.10
[INFO] [stderr]   Downloaded crashlog v0.1.5
[INFO] [stderr]   Downloaded os_info v3.14.0
[INFO] [stderr]   Downloaded zune-jpeg v0.5.5
[INFO] [stderr]   Downloaded objc2-user-notifications v0.3.2
[INFO] [stderr]   Downloaded objc2-core-location v0.3.2
[INFO] [stderr]   Downloaded pxfm v0.1.26
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7dcc01cd6cc6dcfa7e10af570a8e5f5bea479ce1ddddfbdf317051da9cd1911b
[INFO] running `Command { std: "docker" "start" "7dcc01cd6cc6dcfa7e10af570a8e5f5bea479ce1ddddfbdf317051da9cd1911b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7dcc01cd6cc6dcfa7e10af570a8e5f5bea479ce1ddddfbdf317051da9cd1911b" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7dcc01cd6cc6dcfa7e10af570a8e5f5bea479ce1ddddfbdf317051da9cd1911b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7dcc01cd6cc6dcfa7e10af570a8e5f5bea479ce1ddddfbdf317051da9cd1911b" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]     Checking pin-project-lite v0.2.16
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking writeable v0.6.2
[INFO] [stderr]     Checking litemap v0.8.1
[INFO] [stderr]     Checking parking v2.2.1
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.1
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]     Checking utf8_iter v1.0.4
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]    Compiling toml_datetime v0.7.3
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking adler2 v2.0.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.5
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling indexmap v2.12.1
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling cc v1.2.49
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking atomic-waker v1.1.2
[INFO] [stderr]     Checking slab v0.4.11
[INFO] [stderr]     Checking async-task v4.7.1
[INFO] [stderr]     Checking piper v0.2.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]     Checking flate2 v1.1.5
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling toml_parser v1.0.4
[INFO] [stderr]     Checking static_assertions v1.1.0
[INFO] [stderr]     Checking endi v1.1.1
[INFO] [stderr]     Checking cpufeatures v0.2.17
[INFO] [stderr]    Compiling libudev-sys v0.1.4
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]     Checking tracing-core v0.1.35
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking utf8parse v0.2.2
[INFO] [stderr]     Checking pin-utils v0.1.0
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]    Compiling zmij v1.0.16
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]     Checking anstyle-parse v0.2.7
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling toml_edit v0.23.7
[INFO] [stderr]     Checking async-fs v2.2.0
[INFO] [stderr]     Checking async-executor v1.13.3
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.2
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]     Checking hex v0.4.3
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking alloc-no-stdlib v2.0.4
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]     Checking colorchoice v1.0.4
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]    Compiling miniquad v0.4.8
[INFO] [stderr]     Checking anstyle-query v1.1.5
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]     Checking inotify v0.11.0
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking alloc-stdlib v0.2.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking webpki-roots v1.0.5
[INFO] [stderr]     Checking pxfm v0.1.26
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking clap_lex v0.7.6
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking zune-core v0.5.0
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking alsa v0.9.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]     Checking ttf-parser v0.21.1
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking strsim v0.11.1
[INFO] [stderr]     Checking itoa v1.0.17
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking option-ext v0.2.0
[INFO] [stderr]     Checking vec_map v0.8.2
[INFO] [stderr]    Compiling rfd v0.14.1
[INFO] [stderr]    Compiling gilrs v0.11.0
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking gilrs-core v0.6.6
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking clap_builder v4.5.54
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking zune-jpeg v0.5.5
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]     Checking brotli-decompressor v5.0.0
[INFO] [stderr]     Checking os_info v3.14.0
[INFO] [stderr]     Checking png v0.18.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zvariant_utils v2.1.0
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking ascii v1.1.0
[INFO] [stderr]    Compiling macroquad_macro v0.1.8
[INFO] [stderr]     Checking fontdue v0.9.3
[INFO] [stderr]     Checking glam v0.27.0
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking moxcms v0.7.10
[INFO] [stderr]     Checking fnv v1.0.7
[INFO] [stderr]     Checking base64 v0.22.1
[INFO] [stderr]     Checking chunked_transfer v1.5.0
[INFO] [stderr]     Checking number_prefix v0.4.0
[INFO] [stderr]    Compiling bonnie-32 v0.1.12 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]     Checking dasp_sample v0.11.0
[INFO] [stderr]     Checking quad-rand v0.2.3
[INFO] [stderr]     Checking httpdate v1.0.3
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]     Checking pollster v0.3.0
[INFO] [stderr]     Checking raw-window-handle v0.6.2
[INFO] [stderr]     Checking crashlog v0.1.5
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking brotli v8.0.2
[INFO] [stderr]     Checking midir v0.10.3
[INFO] [stderr]     Checking tiny_http v0.12.0
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking memory-stats v1.2.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking rustysynth v1.3.6
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking async-net v2.0.0
[INFO] [stderr]     Checking macroquad v0.4.14
[INFO] [stderr]     Checking image v0.25.9
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling zvariant_derive v4.2.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling zbus_macros v4.4.0
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking rustls-webpki v0.103.9
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking clap v4.5.54
[INFO] [stderr]     Checking xtask v0.1.0 (/opt/rustwide/workdir/xtask)
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking enumflags2 v0.7.12
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking zvariant v4.2.0
[INFO] [stderr]     Checking webbrowser v1.0.6
[INFO] [stderr]     Checking ureq v2.12.1
[INFO] [stderr]     Checking zbus_names v3.0.0
[INFO] [stderr]     Checking zbus v4.4.0
[INFO] [stderr]     Checking ashpd v0.8.1
[INFO] [stdout] warning: unused imports: `ClipResult`, `NEAR_PLANE`, `barycentric`, `clip_triangle_to_near_plane`, `mat4_identity`, `mat4_rotation`, `mat4_translation`, `project_ortho`, and `ray_triangle_intersect`
[INFO] [stdout]   --> src/rasterizer/mod.rs:48:23
[INFO] [stdout]    |
[INFO] [stdout] 48 |     Vec2, Vec3, Mat4, NEAR_PLANE,
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 49 |     perspective_transform, project, project_ortho,
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     clip_triangle_to_near_plane, ClipResult,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 54 |     mat4_identity, mat4_translation, mat4_rotation,
[INFO] [stdout]    |     ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 55 |     mat4_mul, mat4_transform_point, mat4_from_position_rotation,
[INFO] [stdout] 56 |     barycentric, ray_triangle_intersect,
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_test_cube`
[INFO] [stdout]   --> src/rasterizer/mod.rs:66:55
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub use draw::{draw_3d_line_clipped, draw_floor_grid, create_test_cube};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `screen_to_ray_ortho`
[INFO] [stdout]   --> src/rasterizer/mod.rs:72:30
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub use ray::{screen_to_ray, screen_to_ray_ortho, screen_to_ray_auto, ray_line_closest_point, ray_plane_intersection, ray_circle_ang...
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `snap_angle`
[INFO] [stdout]   --> src/ui/mod.rs:41:87
[INFO] [stdout]    |
[INFO] [stdout] 41 |     DragState, DragStatus, DragConfig, SnapMode, Axis, PickerType, apply_drag_update, snap_angle,
[INFO] [stdout]    |                                                                                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ContextMenu`
[INFO] [stdout]  --> src/modeler/layout.rs:9:58
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::state::{ModelerState, SelectMode, ViewportId, ContextMenu, ModalTransform, CameraMode, Axis, MirrorSettings, rotate_by_eul...
[INFO] [stdout]   |                                                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RadialMenuItem`
[INFO] [stdout]     --> src/modeler/layout.rs:8208:30
[INFO] [stdout]      |
[INFO] [stdout] 8208 |     use super::radial_menu::{RadialMenuItem, build_context_items, ComponentContext};
[INFO] [stdout]      |                              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `UvTool` and `draw_palette_panel`
[INFO] [stdout]   --> src/texture/mod.rs:37:55
[INFO] [stdout]    |
[INFO] [stdout] 37 |     TextureEditorMode, UvModalTransform, UvOperation, UvTool,
[INFO] [stdout]    |                                                       ^^^^^^
[INFO] [stdout] 38 |     UvOverlayData, UvVertex, UvFace,
[INFO] [stdout] 39 |     draw_texture_canvas, draw_tool_panel, draw_palette_panel, draw_palette_panel_constrained,
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AssetSource`
[INFO] [stdout]   --> src/asset/mod.rs:46:33
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub use library::{AssetLibrary, AssetSource, ASSETS_DIR, SAMPLES_ASSETS_DIR, USER_ASSETS_DIR};
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClipResult`, `NEAR_PLANE`, `barycentric`, `clip_triangle_to_near_plane`, `mat4_identity`, `mat4_rotation`, `mat4_translation`, `project_ortho`, and `ray_triangle_intersect`
[INFO] [stdout]   --> src/rasterizer/mod.rs:48:23
[INFO] [stdout]    |
[INFO] [stdout] 48 |     Vec2, Vec3, Mat4, NEAR_PLANE,
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 49 |     perspective_transform, project, project_ortho,
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     clip_triangle_to_near_plane, ClipResult,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 54 |     mat4_identity, mat4_translation, mat4_rotation,
[INFO] [stdout]    |     ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 55 |     mat4_mul, mat4_transform_point, mat4_from_position_rotation,
[INFO] [stdout] 56 |     barycentric, ray_triangle_intersect,
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_test_cube`
[INFO] [stdout]   --> src/rasterizer/mod.rs:66:55
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub use draw::{draw_3d_line_clipped, draw_floor_grid, create_test_cube};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `screen_to_ray_ortho`
[INFO] [stdout]   --> src/rasterizer/mod.rs:72:30
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub use ray::{screen_to_ray, screen_to_ray_ortho, screen_to_ray_auto, ray_line_closest_point, ray_plane_intersection, ray_circle_ang...
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `snap_angle`
[INFO] [stdout]   --> src/ui/mod.rs:41:87
[INFO] [stdout]    |
[INFO] [stdout] 41 |     DragState, DragStatus, DragConfig, SnapMode, Axis, PickerType, apply_drag_update, snap_angle,
[INFO] [stdout]    |                                                                                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ContextMenu`
[INFO] [stdout]  --> src/modeler/layout.rs:9:58
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::state::{ModelerState, SelectMode, ViewportId, ContextMenu, ModalTransform, CameraMode, Axis, MirrorSettings, rotate_by_eul...
[INFO] [stdout]   |                                                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RadialMenuItem`
[INFO] [stdout]     --> src/modeler/layout.rs:8208:30
[INFO] [stdout]      |
[INFO] [stdout] 8208 |     use super::radial_menu::{RadialMenuItem, build_context_items, ComponentContext};
[INFO] [stdout]      |                              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `resample_loop_linear`
[INFO] [stdout]     --> src/tracker/spu/pipeline_test.rs:2517:72
[INFO] [stdout]      |
[INFO] [stdout] 2517 |         use crate::tracker::spu::convert::{align_loop_to_adpcm_blocks, resample_loop_linear};
[INFO] [stdout]      |                                                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> src/tracker/spu/pipeline_test.rs:3533:21
[INFO] [stdout]      |
[INFO] [stdout] 3533 |                     ((spu_freq - sf2_freq) / sf2_freq * 100.0)
[INFO] [stdout]      |                     ^                                        ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 3533 -                     ((spu_freq - sf2_freq) / sf2_freq * 100.0)
[INFO] [stdout] 3533 +                     (spu_freq - sf2_freq) / sf2_freq * 100.0
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `UvTool` and `draw_palette_panel`
[INFO] [stdout]   --> src/texture/mod.rs:37:55
[INFO] [stdout]    |
[INFO] [stdout] 37 |     TextureEditorMode, UvModalTransform, UvOperation, UvTool,
[INFO] [stdout]    |                                                       ^^^^^^
[INFO] [stdout] 38 |     UvOverlayData, UvVertex, UvFace,
[INFO] [stdout] 39 |     draw_texture_canvas, draw_tool_panel, draw_palette_panel, draw_palette_panel_constrained,
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::asset::AssetComponent`
[INFO] [stdout]     --> src/asset/library.rs:1024:9
[INFO] [stdout]      |
[INFO] [stdout] 1024 |     use crate::asset::AssetComponent;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AssetSource`
[INFO] [stdout]   --> src/asset/mod.rs:46:33
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub use library::{AssetLibrary, AssetSource, ASSETS_DIR, SAMPLES_ASSETS_DIR, USER_ASSETS_DIR};
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]     --> src/modeler/layout.rs:1338:13
[INFO] [stdout]      |
[INFO] [stdout] 1338 |             y += line_height;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]     --> src/modeler/layout.rs:1664:13
[INFO] [stdout]      |
[INFO] [stdout] 1664 |             y += line_height;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `icon_font`
[INFO] [stdout]     --> src/modeler/layout.rs:5941:85
[INFO] [stdout]      |
[INFO] [stdout] 5941 | fn draw_properties_panel(ctx: &mut UiContext, rect: Rect, state: &mut ModelerState, icon_font: Option<&Font>) {
[INFO] [stdout]      |                                                                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_icon_font`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cy`
[INFO] [stdout]     --> src/modeler/layout.rs:6747:22
[INFO] [stdout]      |
[INFO] [stdout] 6747 |             let (cx, cy) = state.radial_menu.center;
[INFO] [stdout]      |                      ^^ help: if this is intentional, prefix it with an underscore: `_cy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]     --> src/modeler/layout.rs:1338:13
[INFO] [stdout]      |
[INFO] [stdout] 1338 |             y += line_height;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]     --> src/modeler/layout.rs:1664:13
[INFO] [stdout]      |
[INFO] [stdout] 1664 |             y += line_height;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/modeler/mesh_editor.rs:2886:9
[INFO] [stdout]      |
[INFO] [stdout] 2886 |     let mut all_uvs: Vec<&mut Vec<UnwrappedFace>> = islands.iter_mut().collect();
[INFO] [stdout]      |         ----^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_islands`
[INFO] [stdout]     --> src/modeler/mesh_editor.rs:2839:9
[INFO] [stdout]      |
[INFO] [stdout] 2839 |     let num_islands = islands.len() as f32;
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_islands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `icon_font`
[INFO] [stdout]     --> src/modeler/layout.rs:5941:85
[INFO] [stdout]      |
[INFO] [stdout] 5941 | fn draw_properties_panel(ctx: &mut UiContext, rect: Rect, state: &mut ModelerState, icon_font: Option<&Font>) {
[INFO] [stdout]      |                                                                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_icon_font`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cy`
[INFO] [stdout]     --> src/modeler/layout.rs:6747:22
[INFO] [stdout]      |
[INFO] [stdout] 6747 |             let (cx, cy) = state.radial_menu.center;
[INFO] [stdout]      |                      ^^ help: if this is intentional, prefix it with an underscore: `_cy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ortho`
[INFO] [stdout]   --> src/modeler/skeleton.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     ortho: Option<&OrthoProjection>,
[INFO] [stdout]    |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_ortho`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `skeleton_component_selected`
[INFO] [stdout]    --> src/modeler/skeleton.rs:425:9
[INFO] [stdout]     |
[INFO] [stdout] 425 |     let skeleton_component_selected = state.selected_component
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_skeleton_component_selected`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `adpcm_end`
[INFO] [stdout]    --> src/tracker/spu/convert.rs:294:21
[INFO] [stdout]     |
[INFO] [stdout] 294 |                 let adpcm_end = adpcm_start + adpcm_length as usize;
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_adpcm_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `has_loop`
[INFO] [stdout]    --> src/tracker/spu/convert.rs:708:64
[INFO] [stdout]     |
[INFO] [stdout] 708 | fn sf2_envelope_to_adsr(region: &rustysynth::InstrumentRegion, has_loop: bool) -> AdsrParams {
[INFO] [stdout]     |                                                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/modeler/mesh_editor.rs:2886:9
[INFO] [stdout]      |
[INFO] [stdout] 2886 |     let mut all_uvs: Vec<&mut Vec<UnwrappedFace>> = islands.iter_mut().collect();
[INFO] [stdout]      |         ----^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_islands`
[INFO] [stdout]     --> src/modeler/mesh_editor.rs:2839:9
[INFO] [stdout]      |
[INFO] [stdout] 2839 |     let num_islands = islands.len() as f32;
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_islands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ortho`
[INFO] [stdout]   --> src/modeler/skeleton.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     ortho: Option<&OrthoProjection>,
[INFO] [stdout]    |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_ortho`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `skeleton_component_selected`
[INFO] [stdout]    --> src/modeler/skeleton.rs:425:9
[INFO] [stdout]     |
[INFO] [stdout] 425 |     let skeleton_component_selected = state.selected_component
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_skeleton_component_selected`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `adpcm_end`
[INFO] [stdout]    --> src/tracker/spu/convert.rs:294:21
[INFO] [stdout]     |
[INFO] [stdout] 294 |                 let adpcm_end = adpcm_start + adpcm_length as usize;
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_adpcm_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `has_loop`
[INFO] [stdout]    --> src/tracker/spu/convert.rs:708:64
[INFO] [stdout]     |
[INFO] [stdout] 708 | fn sf2_envelope_to_adsr(region: &rustysynth::InstrumentRegion, has_loop: bool) -> AdsrParams {
[INFO] [stdout]     |                                                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tracker/spu/pipeline_test.rs:841:13
[INFO] [stdout]     |
[INFO] [stdout] 841 |         let mut spu = SpuCore::new();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `spu`
[INFO] [stdout]    --> src/tracker/spu/pipeline_test.rs:841:13
[INFO] [stdout]     |
[INFO] [stdout] 841 |         let mut spu = SpuCore::new();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_spu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `freq`
[INFO] [stdout]    --> src/tracker/spu/pipeline_test.rs:897:18
[INFO] [stdout]     |
[INFO] [stdout] 897 |         for (i, &freq) in notes_hz.iter().enumerate() {
[INFO] [stdout]     |                  ^^^^ help: if this is intentional, prefix it with an underscore: `_freq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right`
[INFO] [stdout]     --> src/tracker/spu/pipeline_test.rs:1036:28
[INFO] [stdout]      |
[INFO] [stdout] 1036 |                 let (left, right) = voice.tick(&spu_ram);
[INFO] [stdout]      |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_right`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `region_no_loop`
[INFO] [stdout]     --> src/tracker/spu/pipeline_test.rs:1164:13
[INFO] [stdout]      |
[INFO] [stdout] 1164 |         let region_no_loop = SampleRegion {
[INFO] [stdout]      |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_region_no_loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target`
[INFO] [stdout]     --> src/tracker/spu/pipeline_test.rs:1405:17
[INFO] [stdout]      |
[INFO] [stdout] 1405 |             let target = if *decreasing { 0 } else { 0x7FFF };
[INFO] [stdout]      |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `raw_root_key` is never read
[INFO] [stdout]     --> src/tracker/spu/pipeline_test.rs:1793:36
[INFO] [stdout]      |
[INFO] [stdout] 1793 |           let mut raw_root_key: u8 = 60;
[INFO] [stdout]      |                                      ^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1813 | /                 raw_root_key = if root >= 0 && root <= 127 { root as u8 } else {
[INFO] [stdout] 1814 | |                     let sid = ir.get_sample_id();
[INFO] [stdout] 1815 | |                     if sid < sample_headers.len() {
[INFO] [stdout] 1816 | |                         let op = sample_headers[sid].get_original_pitch();
[INFO] [stdout] 1817 | |                         if op >= 0 && op <= 127 { op as u8 } else { 60 }
[INFO] [stdout] 1818 | |                     } else { 60 }
[INFO] [stdout] 1819 | |                 };
[INFO] [stdout]      | |_________________- `raw_root_key` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_headers`
[INFO] [stdout]     --> src/tracker/spu/pipeline_test.rs:3084:13
[INFO] [stdout]      |
[INFO] [stdout] 3084 |         let sample_headers = soundfont.get_sample_headers();
[INFO] [stdout]      |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_headers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tracker/io.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let mut temp_file = NamedTempFile::new().unwrap();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_busy`, `status`, and `clear_status` are never used
[INFO] [stdout]   --> src/app.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl PendingOps {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 45 |     /// Check if any operation is in progress
[INFO] [stdout] 46 |     pub fn is_busy(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn status(&self) -> Option<&str> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn clear_status(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `width`, `height`, `usable_in_world_editor`, `ALL`, and `WORLD_EDITOR_SIZES` are never used
[INFO] [stdout]    --> src/texture/user_texture.rs:70:12
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl TextureSize {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn width(&self) -> usize {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn height(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn usable_in_world_editor(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub const ALL: &'static [TextureSize] = &[
[INFO] [stdout]     |               ^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub const WORLD_EDITOR_SIZES: &'static [TextureSize] = &[
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/texture/user_texture.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | impl UserTexture {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn content_hash(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn new_64x64(name: impl Into<String>, depth: ClutDepth) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 293 |     pub fn size(&self) -> Option<TextureSize> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn usable_in_world_editor(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub fn set_palette_color(&mut self, index: u8, color: Color15) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn sample(&self, u: f32, v: f32) -> Color15 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 353 |     pub fn fill(&mut self, index: u8) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 444 |     pub fn save<P: AsRef<Path>>(&self, path: P) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 541 |     pub fn to_rgba(&self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 605 |     pub fn count_high_indices(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     pub fn to_raster_texture_15(&self) -> crate::rasterizer::Texture15 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_sample` and `is_user_texture` are never used
[INFO] [stdout]    --> src/texture/user_texture.rs:679:12
[INFO] [stdout]     |
[INFO] [stdout] 677 | impl UserTexture {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 678 |     /// Check if this texture is from the samples directory (read-only)
[INFO] [stdout] 679 |     pub fn is_sample(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 684 |     pub fn is_user_texture(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTURES_USER_DIR` is never used
[INFO] [stdout]   --> src/texture/texture_library.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const TEXTURES_USER_DIR: &str = "assets/userdata/textures";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MANIFEST_FILE` is never used
[INFO] [stdout]   --> src/texture/texture_library.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const MANIFEST_FILE: &str = "manifest.txt";
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/texture/texture_library.rs:286:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl TextureLibrary {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn contains(&self, name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn sample_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 360 |     pub fn user_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub fn has_samples(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     pub fn has_user_textures(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn is_texture_loaded(&self, name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub fn samples(&self) -> impl Iterator<Item = (&str, &UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 437 |     pub fn user_textures(&self) -> impl Iterator<Item = (&str, &UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |     pub fn iter_mut(&mut self) -> impl Iterator<Item = (&str, &mut UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 459 |     pub fn world_editor_textures(&self) -> impl Iterator<Item = (&str, &UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 464 |     pub fn world_editor_user_textures(&self) -> impl Iterator<Item = (&str, &UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub fn world_editor_sample_textures(&self) -> impl Iterator<Item = (&str, &UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn save_texture(&self, name: &str) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 512 |     pub fn save_all(&self) -> Result<usize, TextureError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub fn delete_texture_file(&mut self, name: &str) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn generate_unique_name(&self, base: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     pub fn regenerate_manifest(&self) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 615 |     pub fn regenerate_user_manifest(&self) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 633 |     pub fn discover_with_storage(&mut self, storage: &Storage) -> Result<usize, TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     fn discover_from_dir_with_storage(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 783 |     pub fn regenerate_manifest_with_storage(&self, storage: &Storage) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Grab` and `Scale` are never constructed
[INFO] [stdout]   --> src/texture/texture_editor.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub enum UvModalTransform {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 31 |     Grab,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     Scale,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UvModalTransform` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_rectangular` and `pixel_index` are never used
[INFO] [stdout]    --> src/texture/texture_editor.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl Selection {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn is_rectangular(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn pixel_index(&self, px: i32, py: i32) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `description`, `indices`, and `palette` are never read
[INFO] [stdout]    --> src/texture/texture_editor.rs:406:9
[INFO] [stdout]     |
[INFO] [stdout] 404 | pub struct TextureUndoEntry {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 405 |     /// Description of the change
[INFO] [stdout] 406 |     pub description: String,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 407 |     /// Snapshot of indices before the change
[INFO] [stdout] 408 |     pub indices: Vec<u8>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 409 |     /// Snapshot of palette before the change
[INFO] [stdout] 410 |     pub palette: Vec<Color15>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TextureUndoEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_undo` is never read
[INFO] [stdout]    --> src/texture/texture_editor.rs:467:9
[INFO] [stdout]     |
[INFO] [stdout] 442 | pub struct TextureEditorState {
[INFO] [stdout]     |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 467 |     pub max_undo: usize,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TextureEditorState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset_view`, `save_undo`, `undo`, `redo`, `can_undo`, and `can_redo` are never used
[INFO] [stdout]    --> src/texture/texture_editor.rs:702:12
[INFO] [stdout]     |
[INFO] [stdout] 651 | impl TextureEditorState {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 702 |     pub fn reset_view(&mut self, tex_width: usize, tex_height: usize, view_width: f32, view_height: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 718 |     pub fn save_undo(&mut self, texture: &UserTexture, description: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 738 |     pub fn undo(&mut self, texture: &mut UserTexture) -> bool {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 758 |     pub fn redo(&mut self, texture: &mut UserTexture) -> bool {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 778 |     pub fn can_undo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 783 |     pub fn can_redo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_tool_button` is never used
[INFO] [stdout]     --> src/texture/texture_editor.rs:3007:4
[INFO] [stdout]      |
[INFO] [stdout] 3007 | fn draw_tool_button(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_action_button` is never used
[INFO] [stdout]     --> src/texture/texture_editor.rs:3053:4
[INFO] [stdout]      |
[INFO] [stdout] 3053 | fn draw_action_button(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_palette_panel` is never used
[INFO] [stdout]     --> src/texture/texture_editor.rs:3095:8
[INFO] [stdout]      |
[INFO] [stdout] 3095 | pub fn draw_palette_panel(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ValidationError` is never constructed
[INFO] [stdout]   --> src/asset/asset.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum AssetError {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 56 |     ValidationError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AssetError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/asset/asset.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl Asset {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn empty(name: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn from_mesh_project(name: &str, project: &MeshProject) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn to_mesh_project(&self) -> MeshProject {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn remove_component(&mut self, index: usize) -> Option<AssetComponent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn has_collision(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn has_pickup(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn has_door(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `icon`, `is_collision`, and `is_spawn_point` are never used
[INFO] [stdout]    --> src/asset/component.rs:207:12
[INFO] [stdout]     |
[INFO] [stdout] 187 | impl AssetComponent {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn icon(&self) -> char {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn is_collision(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn is_spawn_point(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `sphere`, `box_shape`, `capsule`, `cylinder`, and `description` are never used
[INFO] [stdout]    --> src/asset/component.rs:275:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl CollisionShapeDef {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 274 |     /// Create a sphere collision shape
[INFO] [stdout] 275 |     pub fn sphere(radius: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn box_shape(half_x: f32, half_y: f32, half_z: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn capsule(radius: f32, height: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn cylinder(radius: f32, height: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn description(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MANIFEST_FILE` is never used
[INFO] [stdout]   --> src/asset/library.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const MANIFEST_FILE: &str = "manifest.txt";
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/asset/library.rs:390:12
[INFO] [stdout]      |
[INFO] [stdout]   72 | impl AssetLibrary {
[INFO] [stdout]      | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  390 |     pub fn get_mut(&mut self, name: &str) -> Option<&mut Asset> {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  407 |     pub fn contains(&self, name: &str) -> bool {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  420 |     pub fn add(&mut self, asset: Asset) {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  450 |     pub fn remove(&mut self, name: &str) -> Option<Asset> {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  484 |     pub fn len(&self) -> usize {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  489 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  494 |     pub fn sample_count(&self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  499 |     pub fn user_count(&self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  504 |     pub fn has_samples(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  509 |     pub fn has_user_assets(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  514 |     pub fn sample_names(&self) -> impl Iterator<Item = &str> {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  519 |     pub fn user_asset_names(&self) -> impl Iterator<Item = &str> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  529 |     pub fn names(&self) -> impl Iterator<Item = &str> {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  534 |     pub fn samples(&self) -> impl Iterator<Item = (&str, &Asset)> {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  544 |     pub fn user_assets(&self) -> impl Iterator<Item = (&str, &Asset)> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  569 |     pub fn iter(&self) -> impl Iterator<Item = (&str, &Asset)> {
[INFO] [stdout]      |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  574 |     pub fn iter_mut(&mut self) -> impl Iterator<Item = (&str, &mut Asset)> {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  581 |     pub fn by_category<'a>(&'a self, category: &'a str) -> impl Iterator<Item = &'a Asset> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  588 |     pub fn with_mesh(&self) -> impl Iterator<Item = &Asset> {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  593 |     pub fn with_collision(&self) -> impl Iterator<Item = &Asset> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  600 |     pub fn with_enemy(&self) -> impl Iterator<Item = &Asset> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  605 |     pub fn with_light(&self) -> impl Iterator<Item = &Asset> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  615 |     pub fn save_asset(&self, name: &str) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  650 |     pub fn save_all(&self) -> Result<usize, AssetError> {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  669 |     pub fn delete_asset_file(&mut self, name: &str) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  691 |     pub fn next_available_name(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  707 |     pub fn generate_unique_name(&self, base: &str) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  727 |     pub fn regenerate_manifest(&self) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  753 |     pub fn user_dir(&self) -> &Path {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  758 |     pub fn samples_dir(&self) -> &Path {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  763 |     pub fn categories(&self) -> Vec<&str> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  785 |     pub fn discover_with_storage(&mut self, storage: &Storage) -> Result<usize, AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  804 |     fn discover_from_dir_with_storage(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  912 |     pub fn save_asset_with_storage(&self, name: &str, storage: &Storage) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  938 |     pub fn delete_asset_with_storage(&mut self, name: &str, storage: &Storage) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  960 |     pub fn reload_asset_with_storage(&mut self, name: &str, storage: &Storage) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1007 |     pub fn regenerate_manifest_with_storage(&self, storage: &Storage) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Pending` is never constructed
[INFO] [stdout]   --> src/storage/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum StorageStatus<T> {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 30 |     /// Operation is still in progress
[INFO] [stdout] 31 |     Pending,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StorageStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_pending` and `is_ready` are never used
[INFO] [stdout]   --> src/storage/mod.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl<T> StorageStatus<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 39 |     /// Check if the operation is still pending
[INFO] [stdout] 40 |     pub fn is_pending(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn is_ready(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SerdeError` is never constructed
[INFO] [stdout]   --> src/storage/mod.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub enum StorageError {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 79 |     SerdeError(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StorageError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `pending`, `is_pending`, `is_ready`, and `poll` are never used
[INFO] [stdout]    --> src/storage/mod.rs:162:12
[INFO] [stdout]     |
[INFO] [stdout] 146 | impl<T> StorageHandle<T> {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn pending() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn is_pending(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn is_ready(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn poll(&self) -> &StorageStatus<T> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `try_get` is never used
[INFO] [stdout]    --> src/storage/mod.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 191 | impl<T: Clone> StorageHandle<T> {
[INFO] [stdout]     | ------------------------------- method in this implementation
[INFO] [stdout] 192 |     /// Get a clone of the result if ready
[INFO] [stdout] 193 |     pub fn try_get(&self) -> Option<Result<T, StorageError>> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `exists`, `exists_sync`, `read_string_sync`, `write_string_sync`, and `is_sync` are never used
[INFO] [stdout]    --> src/storage/mod.rs:333:12
[INFO] [stdout]     |
[INFO] [stdout] 217 | impl Storage {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 333 |     pub fn exists(&self, path: &str) -> StorageHandle<bool> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn exists_sync(&self, path: &str) -> Result<bool, StorageError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     pub fn read_string_sync(&self, path: &str) -> Result<String, StorageError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn write_string_sync(&self, path: &str, content: &str) -> Result<(), StorageError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     pub fn is_sync(&self, path: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `result` is never used
[INFO] [stdout]   --> src/storage/async_ops.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<T> AsyncOp<T> {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn result(&self) -> Option<&AsyncResult<T>> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `path` is never read
[INFO] [stdout]   --> src/storage/async_ops.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct PendingList {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 90 |     pub op: AsyncOp<Vec<String>>,
[INFO] [stdout] 91 |     pub path: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `quota_used` is never read
[INFO] [stdout]   --> src/storage/gcp.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct GcpStorage {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 71 |     /// Cached quota usage (updated after operations)
[INFO] [stdout] 72 |     quota_used: u64,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GcpStorage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `quota_used`, `quota_limit`, `api_url`, and `can_write` are never used
[INFO] [stdout]   --> src/storage/gcp.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | impl GcpStorage {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn quota_used(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn quota_limit(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn api_url(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn can_write(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_quota` and `exists` are never used
[INFO] [stdout]    --> src/storage/gcp.rs:345:12
[INFO] [stdout]     |
[INFO] [stdout] 343 | impl GcpStorage {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 344 |     /// Get user's current quota usage
[INFO] [stdout] 345 |     pub fn get_quota(&self) -> Option<QuotaInfo> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 522 |     pub fn exists(&self, path: &str) -> StorageHandle<bool> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QuotaInfo` is never constructed
[INFO] [stdout]    --> src/storage/gcp.rs:538:12
[INFO] [stdout]     |
[INFO] [stdout] 538 | pub struct QuotaInfo {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `usage_percent` and `usage_string` are never used
[INFO] [stdout]    --> src/storage/gcp.rs:549:12
[INFO] [stdout]     |
[INFO] [stdout] 547 | impl QuotaInfo {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 548 |     /// Usage percentage (0.0 - 1.0)
[INFO] [stdout] 549 |     pub fn usage_percent(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     pub fn usage_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_base_dir` and `exists` are never used
[INFO] [stdout]    --> src/storage/local.rs:34:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl LocalStorage {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn with_base_dir(base_dir: impl Into<PathBuf>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn exists(&self, path: &str) -> StorageHandle<bool> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_access_token` is never used
[INFO] [stdout]    --> src/auth/mod.rs:449:12
[INFO] [stdout]     |
[INFO] [stdout] 449 |     pub fn get_access_token() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_busy`, `status`, and `clear_status` are never used
[INFO] [stdout]   --> src/app.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl PendingOps {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 45 |     /// Check if any operation is in progress
[INFO] [stdout] 46 |     pub fn is_busy(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn status(&self) -> Option<&str> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn clear_status(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `width`, `height`, `ALL`, and `WORLD_EDITOR_SIZES` are never used
[INFO] [stdout]    --> src/texture/user_texture.rs:70:12
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl TextureSize {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn width(&self) -> usize {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn height(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub const ALL: &'static [TextureSize] = &[
[INFO] [stdout]     |               ^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub const WORLD_EDITOR_SIZES: &'static [TextureSize] = &[
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/texture/user_texture.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | impl UserTexture {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn content_hash(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn new_64x64(name: impl Into<String>, depth: ClutDepth) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 293 |     pub fn size(&self) -> Option<TextureSize> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn usable_in_world_editor(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub fn set_palette_color(&mut self, index: u8, color: Color15) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn sample(&self, u: f32, v: f32) -> Color15 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 353 |     pub fn fill(&mut self, index: u8) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 444 |     pub fn save<P: AsRef<Path>>(&self, path: P) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 541 |     pub fn to_rgba(&self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 605 |     pub fn count_high_indices(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     pub fn to_raster_texture_15(&self) -> crate::rasterizer::Texture15 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_sample` and `is_user_texture` are never used
[INFO] [stdout]    --> src/texture/user_texture.rs:679:12
[INFO] [stdout]     |
[INFO] [stdout] 677 | impl UserTexture {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 678 |     /// Check if this texture is from the samples directory (read-only)
[INFO] [stdout] 679 |     pub fn is_sample(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 684 |     pub fn is_user_texture(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTURES_USER_DIR` is never used
[INFO] [stdout]   --> src/texture/texture_library.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const TEXTURES_USER_DIR: &str = "assets/userdata/textures";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MANIFEST_FILE` is never used
[INFO] [stdout]   --> src/texture/texture_library.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const MANIFEST_FILE: &str = "manifest.txt";
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/texture/texture_library.rs:350:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl TextureLibrary {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn sample_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 360 |     pub fn user_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub fn has_samples(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     pub fn has_user_textures(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn is_texture_loaded(&self, name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     pub fn samples(&self) -> impl Iterator<Item = (&str, &UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 437 |     pub fn user_textures(&self) -> impl Iterator<Item = (&str, &UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |     pub fn iter_mut(&mut self) -> impl Iterator<Item = (&str, &mut UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 459 |     pub fn world_editor_textures(&self) -> impl Iterator<Item = (&str, &UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 464 |     pub fn world_editor_user_textures(&self) -> impl Iterator<Item = (&str, &UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub fn world_editor_sample_textures(&self) -> impl Iterator<Item = (&str, &UserTexture)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn save_texture(&self, name: &str) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 512 |     pub fn save_all(&self) -> Result<usize, TextureError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub fn delete_texture_file(&mut self, name: &str) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     pub fn regenerate_manifest(&self) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 615 |     pub fn regenerate_user_manifest(&self) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 633 |     pub fn discover_with_storage(&mut self, storage: &Storage) -> Result<usize, TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     fn discover_from_dir_with_storage(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 783 |     pub fn regenerate_manifest_with_storage(&self, storage: &Storage) -> Result<(), TextureError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Grab` and `Scale` are never constructed
[INFO] [stdout]   --> src/texture/texture_editor.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub enum UvModalTransform {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 31 |     Grab,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     Scale,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UvModalTransform` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_rectangular` and `pixel_index` are never used
[INFO] [stdout]    --> src/texture/texture_editor.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl Selection {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn is_rectangular(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn pixel_index(&self, px: i32, py: i32) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `description`, `indices`, and `palette` are never read
[INFO] [stdout]    --> src/texture/texture_editor.rs:406:9
[INFO] [stdout]     |
[INFO] [stdout] 404 | pub struct TextureUndoEntry {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 405 |     /// Description of the change
[INFO] [stdout] 406 |     pub description: String,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 407 |     /// Snapshot of indices before the change
[INFO] [stdout] 408 |     pub indices: Vec<u8>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 409 |     /// Snapshot of palette before the change
[INFO] [stdout] 410 |     pub palette: Vec<Color15>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TextureUndoEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_undo` is never read
[INFO] [stdout]    --> src/texture/texture_editor.rs:467:9
[INFO] [stdout]     |
[INFO] [stdout] 442 | pub struct TextureEditorState {
[INFO] [stdout]     |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 467 |     pub max_undo: usize,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TextureEditorState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset_view`, `save_undo`, `undo`, `redo`, `can_undo`, and `can_redo` are never used
[INFO] [stdout]    --> src/texture/texture_editor.rs:702:12
[INFO] [stdout]     |
[INFO] [stdout] 651 | impl TextureEditorState {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 702 |     pub fn reset_view(&mut self, tex_width: usize, tex_height: usize, view_width: f32, view_height: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 718 |     pub fn save_undo(&mut self, texture: &UserTexture, description: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 738 |     pub fn undo(&mut self, texture: &mut UserTexture) -> bool {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 758 |     pub fn redo(&mut self, texture: &mut UserTexture) -> bool {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 778 |     pub fn can_undo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 783 |     pub fn can_redo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_tool_button` is never used
[INFO] [stdout]     --> src/texture/texture_editor.rs:3007:4
[INFO] [stdout]      |
[INFO] [stdout] 3007 | fn draw_tool_button(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_action_button` is never used
[INFO] [stdout]     --> src/texture/texture_editor.rs:3053:4
[INFO] [stdout]      |
[INFO] [stdout] 3053 | fn draw_action_button(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_palette_panel` is never used
[INFO] [stdout]     --> src/texture/texture_editor.rs:3095:8
[INFO] [stdout]      |
[INFO] [stdout] 3095 | pub fn draw_palette_panel(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ValidationError` is never constructed
[INFO] [stdout]   --> src/asset/asset.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum AssetError {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 56 |     ValidationError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AssetError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_mesh_project`, `to_mesh_project`, `has_pickup`, and `has_door` are never used
[INFO] [stdout]    --> src/asset/asset.rs:162:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl Asset {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn from_mesh_project(name: &str, project: &MeshProject) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn to_mesh_project(&self) -> MeshProject {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn has_pickup(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn has_door(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `icon` and `is_spawn_point` are never used
[INFO] [stdout]    --> src/asset/component.rs:207:12
[INFO] [stdout]     |
[INFO] [stdout] 187 | impl AssetComponent {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn icon(&self) -> char {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn is_spawn_point(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `sphere`, `box_shape`, `capsule`, `cylinder`, and `description` are never used
[INFO] [stdout]    --> src/asset/component.rs:275:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl CollisionShapeDef {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 274 |     /// Create a sphere collision shape
[INFO] [stdout] 275 |     pub fn sphere(radius: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn box_shape(half_x: f32, half_y: f32, half_z: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn capsule(radius: f32, height: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn cylinder(radius: f32, height: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn description(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MANIFEST_FILE` is never used
[INFO] [stdout]   --> src/asset/library.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const MANIFEST_FILE: &str = "manifest.txt";
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/asset/library.rs:390:12
[INFO] [stdout]      |
[INFO] [stdout]   72 | impl AssetLibrary {
[INFO] [stdout]      | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  390 |     pub fn get_mut(&mut self, name: &str) -> Option<&mut Asset> {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  489 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  494 |     pub fn sample_count(&self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  499 |     pub fn user_count(&self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  504 |     pub fn has_samples(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  509 |     pub fn has_user_assets(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  514 |     pub fn sample_names(&self) -> impl Iterator<Item = &str> {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  519 |     pub fn user_asset_names(&self) -> impl Iterator<Item = &str> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  529 |     pub fn names(&self) -> impl Iterator<Item = &str> {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  574 |     pub fn iter_mut(&mut self) -> impl Iterator<Item = (&str, &mut Asset)> {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  588 |     pub fn with_mesh(&self) -> impl Iterator<Item = &Asset> {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  593 |     pub fn with_collision(&self) -> impl Iterator<Item = &Asset> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  600 |     pub fn with_enemy(&self) -> impl Iterator<Item = &Asset> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  605 |     pub fn with_light(&self) -> impl Iterator<Item = &Asset> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  615 |     pub fn save_asset(&self, name: &str) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  650 |     pub fn save_all(&self) -> Result<usize, AssetError> {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  669 |     pub fn delete_asset_file(&mut self, name: &str) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  727 |     pub fn regenerate_manifest(&self) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  753 |     pub fn user_dir(&self) -> &Path {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  758 |     pub fn samples_dir(&self) -> &Path {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  763 |     pub fn categories(&self) -> Vec<&str> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  785 |     pub fn discover_with_storage(&mut self, storage: &Storage) -> Result<usize, AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  804 |     fn discover_from_dir_with_storage(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  912 |     pub fn save_asset_with_storage(&self, name: &str, storage: &Storage) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  938 |     pub fn delete_asset_with_storage(&mut self, name: &str, storage: &Storage) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  960 |     pub fn reload_asset_with_storage(&mut self, name: &str, storage: &Storage) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1007 |     pub fn regenerate_manifest_with_storage(&self, storage: &Storage) -> Result<(), AssetError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SerdeError` is never constructed
[INFO] [stdout]   --> src/storage/mod.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub enum StorageError {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 79 |     SerdeError(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StorageError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `poll` is never used
[INFO] [stdout]    --> src/storage/mod.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 146 | impl<T> StorageHandle<T> {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn poll(&self) -> &StorageStatus<T> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `try_get` is never used
[INFO] [stdout]    --> src/storage/mod.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 191 | impl<T: Clone> StorageHandle<T> {
[INFO] [stdout]     | ------------------------------- method in this implementation
[INFO] [stdout] 192 |     /// Get a clone of the result if ready
[INFO] [stdout] 193 |     pub fn try_get(&self) -> Option<Result<T, StorageError>> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `exists`, `exists_sync`, `read_string_sync`, `write_string_sync`, and `is_sync` are never used
[INFO] [stdout]    --> src/storage/mod.rs:333:12
[INFO] [stdout]     |
[INFO] [stdout] 217 | impl Storage {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 333 |     pub fn exists(&self, path: &str) -> StorageHandle<bool> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn exists_sync(&self, path: &str) -> Result<bool, StorageError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     pub fn read_string_sync(&self, path: &str) -> Result<String, StorageError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub fn write_string_sync(&self, path: &str, content: &str) -> Result<(), StorageError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     pub fn is_sync(&self, path: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `result` is never used
[INFO] [stdout]   --> src/storage/async_ops.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<T> AsyncOp<T> {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn result(&self) -> Option<&AsyncResult<T>> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `path` is never read
[INFO] [stdout]   --> src/storage/async_ops.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct PendingList {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 90 |     pub op: AsyncOp<Vec<String>>,
[INFO] [stdout] 91 |     pub path: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `quota_used` is never read
[INFO] [stdout]   --> src/storage/gcp.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct GcpStorage {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 71 |     /// Cached quota usage (updated after operations)
[INFO] [stdout] 72 |     quota_used: u64,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GcpStorage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `quota_used`, `quota_limit`, `api_url`, and `can_write` are never used
[INFO] [stdout]   --> src/storage/gcp.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | impl GcpStorage {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn quota_used(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn quota_limit(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn api_url(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn can_write(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_quota` and `exists` are never used
[INFO] [stdout]    --> src/storage/gcp.rs:345:12
[INFO] [stdout]     |
[INFO] [stdout] 343 | impl GcpStorage {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 344 |     /// Get user's current quota usage
[INFO] [stdout] 345 |     pub fn get_quota(&self) -> Option<QuotaInfo> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 522 |     pub fn exists(&self, path: &str) -> StorageHandle<bool> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QuotaInfo` is never constructed
[INFO] [stdout]    --> src/storage/gcp.rs:538:12
[INFO] [stdout]     |
[INFO] [stdout] 538 | pub struct QuotaInfo {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `usage_percent` and `usage_string` are never used
[INFO] [stdout]    --> src/storage/gcp.rs:549:12
[INFO] [stdout]     |
[INFO] [stdout] 547 | impl QuotaInfo {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 548 |     /// Usage percentage (0.0 - 1.0)
[INFO] [stdout] 549 |     pub fn usage_percent(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     pub fn usage_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_access_token` is never used
[INFO] [stdout]    --> src/auth/mod.rs:449:12
[INFO] [stdout]     |
[INFO] [stdout] 449 |     pub fn get_access_token() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [optimized + debuginfo] target(s) in 1m 28s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: ashpd v0.8.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] [stderr] crater-edition-check: all finished
[INFO] running `Command { std: "docker" "inspect" "7dcc01cd6cc6dcfa7e10af570a8e5f5bea479ce1ddddfbdf317051da9cd1911b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7dcc01cd6cc6dcfa7e10af570a8e5f5bea479ce1ddddfbdf317051da9cd1911b", kill_on_drop: false }`
[INFO] [stdout] 7dcc01cd6cc6dcfa7e10af570a8e5f5bea479ce1ddddfbdf317051da9cd1911b
